<?
  class pixSQL {
    private $id; # id konektoru k databázi
    var $login = array(server => "localhost",
                       name => "root",
                       password => "",
                       database => "testovaci");
    var $lastSQL; # poslední provedený dotaz
    var $lastError = array (sql => "", error => ""); # Chybové hlášení posledního příkazu
    var $countSQL; # počet dotazů
    var $debug; # bool - Aktivita debugovacího režimu

# ------------------------------------------------------------------------------------------------------

    # Konstruktor, přihlášení k serveru a databázi.
    public function __construct ($database = NULL, $server = NULL, $name = NULL, $password = NULL) {
    /* ------------------------------------------
      [$database] - název databáze
      [$server]   - název serveru
      [$name]     - přihlašovací jméno
      [$password] - přihlašovací heslo
    ------------------------------------------- */
    
      if (isset($database)) $this->login[database] = $database;
      if (isset($server)) $this->login[server] = $server;
      if (isset($name)) $this->login[name] = $name;
      if (isset($password)) $this->login[password] = $password;
      
      $this->debug = false;
      
      if ($this->id = mysql_connect($this->login[server], $this->login[name], $this->login[password])) {
        mysql_select_db ($this->login[database], $this->id);
        mysql_query("SET CHARACTER SET utf8");
        return true;
      } else return false;
    }
    
# ------------------------------------------------------------------------------------------------------

    # Vrací jednoduše výsledek SQL dotazu
    public function Dotaz ($dotaz) {
    /* ------------------------------------------
      $dotaz - provedený sql dotaz
    ------------------------------------------- */
    
      $this->countSQL++;
      $this->lastSQL = $dotaz;
      if ($vysledek = mysql_query($dotaz, $this->id)) {
        $this->Chyba(null, null);
        while($radek = mysql_fetch_array($vysledek, MYSQL_ASSOC)) $vystup[] = $radek;
        return $vystup;
      } else {
        $this->Chyba($dotaz, mysql_error());
        return false;
      }
      
    }

# ------------------------------------------------------------------------------------------------------
  
    # Příkaz nevracející data
    public function Prikaz ($prikaz) {
    /* ------------------------------------------
      $prikaz - SQL příkaz
    ------------------------------------------- */
      
      $this->countSQL++;
      $this->lastSQL = $prikaz;
      if (mysql_query($prikaz, $this->id)) {
        $this->Chyba(null, null);
        return true;
      }
      else {
        $this->Chyba($prikaz, mysql_error());
        return false;
      }
    }

# ------------------------------------------------------------------------------------------------------

    # Nastavení debug režimu
    public function Debug ($bool) {
    /* ------------------------------------------
      $bool - true / false - vypnout či zapnout
              debug režim.
    ------------------------------------------- */
      
      if ($bool) $this->debug = true;
      else $this->debug = false;
    }

# ------------------------------------------------------------------------------------------------------

    # Odchycení chyby
    public function Chyba ($sql, $error) {
    /* ------------------------------------------
      $sql   - prikaz
      $error - text vyvolané chyby
    ------------------------------------------- */
      
      $this->lastError[sql] = $sql;
      $this->lastError[error] = $error;
      if ($this->debug AND (!empty($this->lastError[error]))) echo $this->lastError[sql] . "<br />" . $this->lastError[error];
    }

# ------------------------------------------------------------------------------------------------------
  
    # INSERT příkaz
    public function Insert ($tabulka, $data) {
    /* ------------------------------------------
      $tabulka - název tabulky
      $data    - pole dat
    ------------------------------------------- */
      
      $dotaz = "INSERT INTO {$tabulka} SET ";
      foreach ($data as $key => $val) $pole[] = "{$key} = '{$val}'";
      $dotaz .= implode(", ", $pole);
      return $this->Prikaz($dotaz);
    }

# ------------------------------------------------------------------------------------------------------

    # UPDATE příkaz
    public function Update ($tabulka, $restrikce, $data) {
    /* ------------------------------------------
      $tabulka   - název tabulky
      $restrikce - restrikce
      $data      - pole dat
    ------------------------------------------- */
      
      $dotaz = "UPDATE {$tabulka} SET ";
      foreach ($data as $key => $val) $pole[] = "{$key} = '{$val}'";
      $dotaz .= implode(", ", $pole);
      $dotaz .= " WHERE {$restrikce}";
      return $this->Prikaz($dotaz);
    }

# ------------------------------------------------------------------------------------------------------

  }  

?>
